#!/bin/bash
echo "🔍 对比两个 mingw64 目录结构"
echo "=========================================="

# 两个要对比的路径
PATH1="/c/msys64/mingw64"
PATH2="/d/mingw64"

echo "路径1: $PATH1"
echo "路径2: $PATH2"
echo ""

compare_directory() {
    local path1="$1"
    local path2="$2"
    local dir_name="$3"
    
    echo "=== 对比 $dir_name 目录 ==="
    
    # 检查目录是否存在
    local dir1="$path1/$dir_name"
    local dir2="$path2/$dir_name"
    
    if [ ! -d "$dir1" ]; then
        echo "❌ 路径1不存在: $dir1"
        return
    fi
    if [ ! -d "$dir2" ]; then
        echo "❌ 路径2不存在: $dir2" 
        return
    fi
    
    # 统计文件数量
    local count1=$(find "$dir1" -type f 2>/dev/null | wc -l)
    local count2=$(find "$dir2" -type f 2>/dev/null | wc -l)
    
    echo "路径1文件数: $count1"
    echo "路径2文件数: $count2"
    echo "差异: $((count1 - count2))"
    
    # 统计特定类型文件
    echo ""
    echo "📊 详细文件类型统计:"
    
    # 头文件
    local h1=$(find "$dir1" -name "*.h" 2>/dev/null | wc -l)
    local h2=$(find "$dir2" -name "*.h" 2>/dev/null | wc -l)
    echo "头文件(.h): $h1 vs $h2 (差异: $((h1 - h2)))"
    
    # 库文件
    local a1=$(find "$dir1" -name "*.a" 2>/dev/null | wc -l)
    local a2=$(find "$dir2" -name "*.a" 2>/dev/null | wc -l)
    local dll_a1=$(find "$dir1" -name "*.dll.a" 2>/dev/null | wc -l)
    local dll_a2=$(find "$dir2" -name "*.dll.a" 2>/dev/null | wc -l)
    echo "静态库(.a): $a1 vs $a2 (差异: $((a1 - a2)))"
    echo "导入库(.dll.a): $dll_a1 vs $dll_a2 (差异: $((dll_a1 - dll_a2)))"
    
    # 二进制文件
    local exe1=$(find "$dir1" -name "*.exe" 2>/dev/null | wc -l)
    local exe2=$(find "$dir2" -name "*.exe" 2>/dev/null | wc -l)
    local dll1=$(find "$dir1" -name "*.dll" 2>/dev/null | wc -l)
    local dll2=$(find "$dir2" -name "*.dll" 2>/dev/null | wc -l)
    echo "可执行文件(.exe): $exe1 vs $exe2 (差异: $((exe1 - exe2)))"
    echo "动态库(.dll): $dll1 vs $dll2 (差异: $((dll1 - dll2)))"
    
    echo ""
}

# 对比主要目录
compare_directory "$PATH1" "$PATH2" "include"
compare_directory "$PATH1" "$PATH2" "lib"
compare_directory "$PATH1" "$PATH2" "bin"

# 对比特殊目录
echo "=== 特殊目录存在性检查 ==="
for special_dir in sbin var libexec share; do
    dir1="$PATH1/$special_dir"
    dir2="$PATH2/$special_dir"
    
    exist1=$([ -d "$dir1" ] && echo "✅ 存在" || echo "❌ 不存在")
    exist2=$([ -d "$dir2" ] && echo "✅ 存在" || echo "❌ 不存在")
    
    echo "$special_dir: 路径1 $exist1, 路径2 $exist2"
done
